package com.sun.thread;

public class MemorySystemReordering {
    private int x = 0;
    private int y = 0;
    private volatile boolean ready = false;

    public void writer() {
        x = 1;          // 操作1 - 可能被缓存在写缓冲区
        y = 2;          // 操作2 - 可能被缓存在写缓冲区
        ready = true;   // 操作3 - volatile写，可能先刷新
    }

    public void reader() {
        if (ready) {    // 操作4 - volatile读
            // 这里可能看到：ready=true，但x=0或y=0！
            System.out.println("x=" + x + ", y=" + y);
        }
    }
}